package org.example.multiThreading.queue;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

/**
 * 阻塞队列
 */
public class TestBlockingQueue {
    public static void main(String[] args) throws InterruptedException {
//        TestArrayBlockingQueue();
        TestLinkedBlockingQueue();
    }

    /**
     * 阻塞队列，使用数组实现
     * 有界
     */
    public static void TestArrayBlockingQueue() throws InterruptedException {
        ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(1);
        queue.put("1");
        //队列长度为一，只能添加一个元素，不出对无法添加到队列
        queue.put("2");
        System.out.println("这里无法执行");
    }

    /**
     * 阻塞队列，使用链表实现
     * 有界
     */
    public static void TestLinkedBlockingQueue() throws InterruptedException {
        LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<String>(1);
        queue.put("1");
        //队列长度为一，只能添加一个元素，不出对无法添加到队列
        queue.put("2");
        System.out.println("这里无法执行");
    }
}
